// { dg-run }

#pragma omp begin declare target indirect
class C
{
public:
  int y;
  int f (int x) { return x + y; }
};
#pragma omp end declare target

int main (void)
{
  C c;
  c.y = 27;
  int x;
  int (C::*fn_ptr) (int) = &C::f;

#pragma omp target map (to: c, fn_ptr) map (from: x)
  x = (c.*fn_ptr) (42);

  return x != 27 + 42;
}
